home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 July / CD 3 / redhat-6.2.iso / RedHat / instimage / usr / lib / anaconda / syslogd.py < prev    next >
Encoding:
Python Source  |  2000-03-08  |  899 b   |  49 lines

  1. # Simple syslog
  2.  
  3. import sys, os
  4. from socket import *
  5. from select import select
  6.  
  7. class Syslogd:
  8.     def goSyslog(self, output, sockName):
  9.     sock = socket(AF_UNIX, SOCK_STREAM)
  10.  
  11.     try:
  12.         os.unlink(sockName)
  13.     except os.error:
  14.         pass
  15.  
  16.     sock.bind(sockName)
  17.     acceptedFds = []
  18.     sock.listen(5)
  19.  
  20.     while (1):
  21.         list = acceptedFds + [ sock ]
  22.         list = select(list, [], [])[0]
  23.         try:
  24.         list.remove(sock)
  25.         (fd, remoteAddr) = sock.accept()
  26.         acceptedFds.append(fd)
  27.         except ValueError:
  28.         pass
  29.  
  30.         for fd in list:
  31.         msg = fd.recv(50)
  32.         if (msg):
  33.             output.write(msg)
  34.         else:
  35.             acceptedFds.remove(fd)
  36.             fd.close()
  37.  
  38.     def __del__(self):
  39.     self.kill()
  40.  
  41.     def kill(self):
  42.     os.kill(self.child, 15)
  43.     os.waitpid(self.child, 0)
  44.  
  45.     def __init__(self, root = "", output = sys.stdout, socket = "/dev/log"):
  46.     output = output
  47.     filename = root + socket;
  48.         self.goSyslog(output, filename)
  49.